﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualStudio.IntelliTrace;

namespace Microsoft.VisualStudio.Samples
{
    public interface ThreadChainHandler
    {
        IntelliTraceProcess Process { set; }

        void MethodEnterEvent(IntelliTraceEvent ev);
        void MethodExitEvent(IntelliTraceEvent ev);
        void CallSiteEvent(IntelliTraceEvent ev);
        
        void ExceptionThrownEvent(IntelliTraceEvent ev);

        void ExceptionSearchFunctionEnterEvent(IntelliTraceEvent ev);
        void ExceptionSearchFunctionExitEvent(IntelliTraceEvent ev);
        void ExceptionSearchFilterEnterEvent(IntelliTraceEvent ev);
        void ExceptionSearchFilterExitEvent(IntelliTraceEvent ev);
        void ExceptionSearchCatchFoundEvent(IntelliTraceEvent ev);

        void ExceptionUnwindFunctionEnterEvent(IntelliTraceEvent ev);
        void ExceptionUnwindFunctionExitEvent(IntelliTraceEvent ev);
        void ExceptionUnwindFinallyEnterEvent(IntelliTraceEvent ev);
        void ExceptionUnwindFinallyExitEvent(IntelliTraceEvent ev);

        void ExceptionCatchEnterEvent(IntelliTraceEvent ev);
        void ExceptionCatchExitEvent(IntelliTraceEvent ev);
    }
}
